let arr = [1, 2, 3, 4]
console.log(...arr); //1 2 3 4
console.log(1, 2, 3, 4); //1 2 3 4
//两者输出结果一样是因为 log()   函数将 展开语法中的 ,  逗号 作为 参数分隔符解释了



//展开语法用于 合并数组
let arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
  //1.方法一：
let arr3 = [...arr1, ...arr2]
console.log(arr3); //[ 1, 2, 3, 4, 5, 6 ]
//2.方法二：
arr1.push(...arr2);
console.log(arr1); //[ 1, 2, 3, 4, 5, 6 ]

//将伪数组展开成真数组
/* 
//1. 用在选择DOM结构时
let oDivs = document.querySelectorAll('div');
console.log(oDivs);
let arrayTrue = [...oDivs];
console.log(arrayTrue);
console.log(arrayTrue instanceof Array); //true

*/

//2.构造函数方法Array.from()
let arrayLike = {
  '0': 'a',
  '1': 'b',
  '2': 'c',
  length: 3
}
let arrayTrue = Array.from(arrayLike);
console.log(arrayTrue); //[ 'a', 'b', 'c' ]
//Array.from();还可以接受第二个参数，作用类似于数组的map方法，用来对每个元素进行处理，将处理后的值放入返回的数组
let newArrayTrue = Array.from(arrayLike, item => item + '666');
console.log(newArrayTrue); //[ 'a666', 'b666', 'c666' ]